23

» WarCraft 3 / Защита мапы

Похожие вопросы:

ответ
видео гайда нету но есть текстовый
вот по пунктам
  1. заюзать прогу "депротектор" на карте (депротектор можно найти на этом сайте или в гугле)
  2. с помощью mpq архиватора вытащить из карты файл war3map.j (mpq архиватор можно найти на этом сайте или в гугле)
  3. найти и удалить условие проверки одиночная игра или нет (в каждой карте проверка сделана по своему так что без мозга и знаний jass нифига не выйдет)
  4. запихнуть файл war3map.j обратно в карту с помощью mpq архиватора
  5. ????
  6. PROFIT
ответ
Ладно обобщу все что тут сказано было:
Защитить можно, но чем сильнее защита, тем сложнее её писать.
Убить заголовок MPQ v2 можно, что не даст возможности некоторым ботам прочитать карту, но есть новый Storm, которому по зубам эта уловка.
От бота передать какие-то уникальные данные можно (хоть HCL, хоть от fakeplayer'a в чат написать), но есть 2 минуса:
  1. Защиту можно обойти просто изменив j файл
  2. Прослушка трафика и подгон бота под карту.
Способ prog (xgm.guru/p/wc3/212625?postid=392839#comment25), конечно, обеспечит должную защиту, но насколько тогда секретна карта, чтобы такое ставить?

23

» WarCraft 3 / Получение урона

Похожие вопросы:

ответ
Урон настраивается через уровень способности, или как было сказано unit - damage target
команда для использования нестандартной способности берется от той способности, на основе которой ты её сделал, и если это цепь тралла - Unit - issue order with targetign a unit - orc - chain lighting
ответ
здесь есть
Карта damage detect
ответ
Yonsen, вейт это баганая херня которая не должна юзаться в подобных случаях
кроме того не забывай что враг может отбежать и тогда урон будет нанесён раньше чем долетит снаряд
данный спелл можно сделать 2 способами
  1. юзаем систему снарядов и канал (необходим школьный курс геометрии и статьи про движение)
  2. через отлов урона и даммик (герой кастует канал на врага - создаётся дамми юнит - дамми юнит кастует спелл на врага; срабатывает событие юнит получил урон, условие: тип юнита (источник урона) равен типу дамми юнита, действие: удаляем юнита источник урона и проверяем баффы, наносим доп урон и т.д. )
quq_CCCP, не самая лучшая реализация (куча триггеров и прочее)
ответ
Как вариант, можно найти в системе действия, в которых триггерно наносится урон юниту (потеря жизней), и отлавливать уже оттуда.
ответ
Характеристики - может бежать - убрать галочку

23

» WarCraft 3 / Рандомные герои

Похожие вопросы:

ответ
есть статья на эту тему
так что клоз
ответ
ssbbssc, WarSC, оба офнитесь
фигню несёте
судя по тому что написал афтар ему нужен чит позволяющий ему строить любого героя
но триггеров он не знает
поэтому сначала читаем статьи
потом делаем триггер
событие - игрок вводит текст -cheat
действие - создать триггерному игроку строителя способного строить особый алтарь
простейший триггер
ответ
Что там за ужасные условия?
Короче. Можешь сделать вот так вота:
Исходные данные- массив героев.
1 способ- создаешь массив, размер которого = размеру массива героев и заполняешь его линейным методом. То есть с помощью рандома выбираешь первое число. И потом с помощью последовательности i+(k*q), где i- изначальная ячейка; k- попытка: q- шаг.
2 способ- также создаешь массив, но заполняешь его вот так: рандомом выбираешь героя. Проверяешь, имеется ли уже такой в новом массиве. Если да- перевыбираешь, если нет- вставляешь и переходишь к следующей ячейки
Таким образом каждую игру будет генерироваться твой массив случайным образом. Заводишь переменную s, считающую сколько героев уже вытащили, и создаешь героя из твоего нового сформированного массива под номером s
Проще сказать: формируй каждую игру новый массив и вытаскивай по одному герою из него каждый раз, когда требуется
ответ
Потому что при стандартном получении опыта вмешиваются игровые константы и формулы по которым они работают, либо своя система это тогда смотри 3 вопрос от бота, либо настраивай игровые константы как тебе надо, это все описано в базовой статье по редактору, раздел формулы WE.

23

» WarCraft 3 / Копии объектов в JASS

Похожие вопросы:

ответ
S2I принимает строку в качестве параметра и никак её не изменяет
с чего вдруг он должен создавать новые строки?
I2S создаёт временную строку
если в таблице есть строка равная временной по хэшу то он возвращает строку из таблицы
если в таблице строки нету то он добавляет нашу временную строку в таблицу
т.е. обычный алгоритм хэширования

23

» WarCraft 3 / Вариации в декорации

Похожие вопросы:

ответ
Я только свои вместо стандарток делал все работало. Так что как вариант)
ответ
Объясню на примере AshenRocks (камни Ашенваля):
Папка с моделями: Doodads\Ashenvale\Rocks\AshenRock\
То, что в "Файл модели": Doodads\Ashenvale\Rocks\AshenRock\AshenRock
Пути моделей:
  • Doodads\Ashenvale\Rocks\AshenRock\AshenRock0.mdx
  • Doodads\Ashenvale\Rocks\AshenRock\AshenRock1.mdx
и так до
  • Doodads\Ashenvale\Rocks\AshenRock\AshenRock9.mdx
В поле вариации ставим 10, так как всего у нас 10 моделей.
Пробуй, думаю, что заработает.
ответ
Вариации работают так: в адресе файла модели декорации указывается типа [MyModel].mdx, но этого файла на самом деле нет, а есть только файлы вариации типа [MyModel]0.mdx, [MyModel]1.mdx, [MyModel]2.mdx и т. п.
ответ
~8gabriel8:
У декораций для вариаций есть несколько моделей с тем же именем и припиской: ...00, ...01, ...02... А в Редакторе объектов для модели указывается только имя без приписки. У башен же есть несколько вариаций анимации Stand, которые идут для Смотровой башни, Осадной башни, Стрелковой башни и Магической, странно, что у тебя отображает лишь Смотровую и Осадную. Запамятовал, можно ли триггером выставлять декорациям теги анимации, но если да, то добавляй тег Смотровой башни. Другой вариант - сделать в Редакторе объектов Боевую единицу Башню со способностью Москиты, чтобы она была невыбираема. Способность эту можно поставить через JNGP или выбрав строку со способностями, нажав Shift+Enter, напечатать Aloc.

23

» WarCraft 3 / id способности

Похожие вопросы:

ответ
wupse, второй спелбук
ответ
Простым способом, нет не получится...
С триггерами можно
ответ
Базовый ид приказа указан для галочки в ро, его изменить можно только у канала да поставки ресурсов, у прочих способностей он не меняется. По этому ид движок узнает какой взять метод для обработки скилла, по нему рисуется на иконках кулдаун индикатор и так далее. Изменить механику дефолтных способностей нельзя.
ответ
Прочитал в другой теме, что это и правда нереально, стандартный ИИ не знает канал.

23

» WarCraft 3 / У меня есть 2 вопроса.

Похожие вопросы:

ответ
юнит получает урон
1 ответ на 2 вопроса
ответ
  1. в 1 вопросе может быть лишь 1 вопрос
  2. если для юнита то просто меняй размер юнита в ро иначе смотри пункт 2
  3. раздел 4
  4. уже ответили иначе смотри пункт 2
ответ
кхе, всё вроде можно, но объяснять долго, третье простое, просто при юзании способности в триггерах добавь условие сравнения, если юнит цель применяемой способности нежить, тогда действие о дополнительном уроне, например если способность наносит 100, то 20% это 20,в действии приказать применяющий юнит нанести урон юнит цель применяемой способности 100+(0.20х100), перед этим 100 можно установить, как переменную, например если с каждым уровнем урон растёт на 100, то переменная int=100хУровень способности способность у применяющий юнит.
Сложно объяснил?
ответ
Можно через "or":
exitwhen ( a == b ) or ( j > i )
ответ
При нажатии удара грома
Используйте Get\SetUnitUserData для героя, он должен иметь собственную привязку структуры.
Так-же должна быть структура дамика, в которой будет таймер с шагами относительно времени на 1 сек 25 шагов, с долей в 0,04 сек за 1 шаг.
Структура дамика должна быть сохранена в UnitUserData дамми юнитов.
Вычислит середину времени к пример 5 сек тамера, где его середина является 2,5 ~ (62 шаг приблизительно )
Если тек. шаг == 62 то
Создать Даммик(Пехотинец)
СтруктураГероя->Пехотинец=ЮнитПехотинца
КонецЕсли
Если время пребывания пехотинца оконченное, или он по непоняткам смотал ранее, то очищаем в структуре геря его.
При нажатии на гром. поступь:
Проверяем наличие пехотинца в геройской структуре..
Есть Пехотинец? Да => Создаём Варлока, Нет => Не создаём (Ну, и занести варлока в переменную структуры героя с именем варлока, если не надо плодить другого варлока, также с пехотинцем)
Надеюсь, что я понятно изъяснил.

23

» WarCraft 3 / Как выбрать в триггере всех игроков?

Похожие вопросы:

ответ
реализуй эту функцию сам
создай переменную типа int и перебери всех юнитов игрока на карте
и для каждого из них увеличивай int на 1
в результате значение int будет равно количеству юнитов на карте
ответ
Что за чушь ты тут описал? Просто когда спасатели прилетают, паузи таймер, а при перезапуске игры, запускай его по новой(с тем же ожиданием)
Кстати, идея норм. Можешь скинуть? А то я не удержусь, и стырю её у тебя :D
ответ
Astra:
Скорее всего в триггере стоит локальный игрок красного цвета. Скрин в студию
Во время инициализации карты в стартовой позиции игрока создается 1 висп.
Заменил триггер на другой, все заработало.
molot39:
Может проще будет после постройки здания сделать reset animation - на trigger unit
Увы, не работает.
Одним словом, я просто взял модель виспа, удалил у него все анимации, кроме stand, импортировал в карту, прописав путь к файлу, как к файлу модели оригинального виспа.
ответ
вот стандартный набор функций мили игры в триггере инициализации:
    call MeleeStartingVisibility(  )
    call MeleeStartingHeroLimit(  )
    call MeleeGrantHeroItems(  )
    call MeleeStartingResources(  )
    call MeleeClearExcessUnits(  )
    call MeleeStartingUnits(  )
    call MeleeStartingAI(  )
    call MeleeInitVictoryDefeat(  )
По названиям функций думаю понятно что они делают, рассмотрим по подробнее MeleeInitVictoryDefea( )
function MeleeInitVictoryDefeat takes nothing returns nothing
    local trigger    trig
    local integer    index
    local player     indexPlayer

    // Create a timer window for the "finish soon" timeout period, it has no timer
    // because it is driven by real time (outside of the game state to avoid desyncs)
    set bj_finishSoonTimerDialog = CreateTimerDialog(null)

    // Set a trigger to fire when we receive a "finish soon" game event
    set trig = CreateTrigger()
    call TriggerRegisterGameEvent(trig, EVENT_GAME_TOURNAMENT_FINISH_SOON)
    call TriggerAddAction(trig, function MeleeTriggerTournamentFinishSoon)

    // Set a trigger to fire when we receive a "finish now" game event
    set trig = CreateTrigger()
    call TriggerRegisterGameEvent(trig, EVENT_GAME_TOURNAMENT_FINISH_NOW)
    call TriggerAddAction(trig, function MeleeTriggerTournamentFinishNow)

    // Set up each player's mortality code.
    set index = 0
    loop
        set indexPlayer = Player(index)

        // Make sure this player slot is playing.
        if (GetPlayerSlotState(indexPlayer) == PLAYER_SLOT_STATE_PLAYING) then
            set bj_meleeDefeated[index] = false
            set bj_meleeVictoried[index] = false

            // Create a timer and timer window in case the player is crippled.
            set bj_playerIsCrippled[index] = false
            set bj_playerIsExposed[index] = false
            set bj_crippledTimer[index] = CreateTimer()
            set bj_crippledTimerWindows[index] = CreateTimerDialog(bj_crippledTimer[index])
            call TimerDialogSetTitle(bj_crippledTimerWindows[index], MeleeGetCrippledTimerMessage(indexPlayer))

            // Set a trigger to fire whenever a building is cancelled for this player.
            set trig = CreateTrigger()
            call TriggerRegisterPlayerUnitEvent(trig, indexPlayer, EVENT_PLAYER_UNIT_CONSTRUCT_CANCEL, null)
            call TriggerAddAction(trig, function MeleeTriggerActionConstructCancel)

            // Set a trigger to fire whenever a unit dies for this player.
            set trig = CreateTrigger()
            call TriggerRegisterPlayerUnitEvent(trig, indexPlayer, EVENT_PLAYER_UNIT_DEATH, null)
            call TriggerAddAction(trig, function MeleeTriggerActionUnitDeath)

            // Set a trigger to fire whenever a unit begins construction for this player
            set trig = CreateTrigger()
            call TriggerRegisterPlayerUnitEvent(trig, indexPlayer, EVENT_PLAYER_UNIT_CONSTRUCT_START, null)
            call TriggerAddAction(trig, function MeleeTriggerActionUnitConstructionStart)

            // Set a trigger to fire whenever this player defeats-out
            set trig = CreateTrigger()
            call TriggerRegisterPlayerEvent(trig, indexPlayer, EVENT_PLAYER_DEFEAT)
            call TriggerAddAction(trig, function MeleeTriggerActionPlayerDefeated)

            // Set a trigger to fire whenever this player leaves
            set trig = CreateTrigger()
            call TriggerRegisterPlayerEvent(trig, indexPlayer, EVENT_PLAYER_LEAVE)
            call TriggerAddAction(trig, function MeleeTriggerActionPlayerLeft)

            // Set a trigger to fire whenever this player changes his/her alliances.
            set trig = CreateTrigger()
            call TriggerRegisterPlayerAllianceChange(trig, indexPlayer, ALLIANCE_PASSIVE)
            call TriggerRegisterPlayerStateEvent(trig, indexPlayer, PLAYER_STATE_ALLIED_VICTORY, EQUAL, 1)
            call TriggerAddAction(trig, function MeleeTriggerActionAllianceChange)
        else
            set bj_meleeDefeated[index] = true
            set bj_meleeVictoried[index] = false

            // Handle leave events for observers
            if (IsPlayerObserver(indexPlayer)) then
                // Set a trigger to fire whenever this player leaves
                set trig = CreateTrigger()
                call TriggerRegisterPlayerEvent(trig, indexPlayer, EVENT_PLAYER_LEAVE)
                call TriggerAddAction(trig, function MeleeTriggerActionPlayerLeft)
            endif
        endif

        set index = index + 1
        exitwhen index == bj_MAX_PLAYERS
    endloop

    // Test for victory / defeat at startup, in case the user has already won / lost.
    // Allow for a short time to pass first, so that the map can finish loading.
    call TimerStart(CreateTimer(), 2.0, false, function MeleeTriggerActionAllianceChange)
endfunction
Вроде много, но тут все просто, создается три триггера один следит за тем сколько построил зданий любой играющий игрок, второй следит сколько зданий погибло у любого играющего игрока, ну а третий следит за теми кто ливнул, чтобы их не преребирать, два прочих вспомогательные, следят за отмненой строительства и прочее.
Итого делаем вывод, чтобы узнать проиграл или нет игрок, нам нужно узнать сколько у него живых зданий, меньше 1 игрок проиграл. А реализовать это можно как угодно, триггерами следящими за смертями и прочим или таймером, который будет переодически считать все здания каждого игрока и давать поражение тем игрокам у кого не осталось ни одного здания...
ответ
Filius Dei:
я так и не понял почему ты не можешь просто сделать как улучшение что не так с улучшением как в обычном случае.
дело в описании, вот и не могу так сделать,если сделать через улучшение здания, то при наведении на иконку вплывает подсказка, та же подсказка что будет и у самого здания в списке построек у светлячка, тоесть если делать через улучшение (по идее этот же юнит должен быть и в списке построек (а он там есть) ту подсказку которую я хочу будет лишней. вот пример: Древо жизни превращается в древо мира, при этом все союзные юниты вблизи древа получают повышеную регенерацию здоровья. (а теперь представь что эта подсказка будет в списке построек у светлячка, вообще не то)
Решил проблему путем выбора древа когда истекает однократный таймер, также подумал и решил что наверно лучше делать через способности, а не исследования. Но у меня остался один вопрос, если этот тригер отвечающий за применения этих способностей будет использовать несколько игроков, я не знаю будет ли использоватся оно коректно или нет, также и с отдельным триггером Таймер. Вот что вышло в данный момент:

23

» WarCraft 3 / День/ночь

Похожие вопросы:

ответ
Denis55:
Sergey34:
Бля ,да че вы мучаетесь ночью в полночь делаем random integer между 1 и 100 и если равен integer 10 -то это 1 % если 1.2.3.4.5.6.7.8.9.10 - то 10% шанс превращения остальные вообще ничего не делаем - я бы за пару часов такое сделал но да только вряд ли мне согласятся заплатить))
так там при каждом превращение определяется время суток и если день то шанс на превращение 10% а если ночь то 50% т.е в любое время ночи если клацнуть превращение в воргена медведя то есть шанс (ночью) в 50 процентов обезуметь стать волком. Днём же этот шанс меньше.
Хотя правда я ничего не понял из того что ты написал и не уверен триггерное ли ты мне предлагаешь . Вот взгляни если не трудно ... (мне осталось шанс сделать а я не понимаю как :с) да и просто посмотри может вообще не правильно это. static2.keep4u.ru/2015/09/23/PT.png
Я тебе говорю триггер который срабатывает когда наступает полночь - random integer 1-100 когда какая нибудь из 10 цифр выпадает превращайся в волка - другие в медведя или напиши мне в личку там подробнее обьясню
и вообще - зачем непосредственно превращаться в медведя способностью?
Не проще подменять персонажей во время превращения? Я так делал - так удобнее
ответ
ssbbssc, не неси чушь. FrameDef (.fdf) файлы хранящие расположение частей интерфейса, их внешний вид и тд. Можно даже свою кнопку добавить и тд, только эффект ей без внешних длл не припишешь. Лежат в мпкью по пути UI\FrameDef\
ответ
Если у вас не анло-язычный jpng, а xgm'ский(5d), то это бесполезно. Всегда будет ночь, лучше попробуйте новую сборку jpng: Jass New Gen Pack - Rebuild 1.3 , надеюсь поможет.
ответ
С помощью клавиши L (по умолчанию).
Эта кнопка регулирует яркость, а если время суток, то через Файл->Параметры->Визуальные->Фикс. время суток(...).

23

» WarCraft 3 / Крашится карта

Похожие вопросы:

ответ
Крашлог и карту желательно, мб где то пропустили скобку?
ответ
приложи лучше .txt файл с крашем из папки /errors
ответ
biridius:
скинь хоть сам файл ошибки, из папки Errors (в папке с варом) там текстовые файлы, найди с нужной датой/временем
иначе ничего не понятно
Может расскажите лучше как я сам с этим текстовым файлом смогу решить эту проблему)?
+ я там сверху кусок скинул
Кароче - вот

x86 Registers

EAX=00000000 EBX=00000000 ECX=0EEA0020 EDX=0EEAE0A8 ESI=001985EC
EDI=00000000 EBP=0EE70088 ESP=0019842C EIP=00000000 FLG=00010202
CS =0023 DS =002B ES =002B SS =002B FS =0053 GS =002B

Stack Trace (Manual)

Address Frame Logical addr Module
00000000 0EE70088 0000:00000000 C:\Program Files (x86)\WarCraft III - 1.26\war3.exe

Stack Trace (Using DBGHELP.DLL)

6F45862F Game.dll GameMain+4517343 (0x00000000,0x00000000,0x00000000,0x00000000)

Loaded Modules

0x00400000 - 0x0047D000 C:\Program Files (x86)\WarCraft III - 1.26\war3.exe
0x15000000 - 0x15061000 C:\Program Files (x86)\WarCraft III - 1.26\Storm.dll
0x21100000 - 0x2115F000 C:\Program Files (x86)\WarCraft III - 1.26\mss32.dll
0x22600000 - 0x22616000 C:\Program Files (x86)\WarCraft III - 1.26\redist\miles\Mssfast.m3d
0x22700000 - 0x22717000 C:\Program Files (x86)\WarCraft III - 1.26\redist\miles\Mssdolby.m3d
0x22C00000 - 0x22C18000 C:\Program Files (x86)\WarCraft III - 1.26\redist\miles\Msseax2.m3d
0x24600000 - 0x24611000 C:\Program Files (x86)\WarCraft III - 1.26\redist\miles\Reverb3.flt
0x26F00000 - 0x26F2A000 C:\Program Files (x86)\WarCraft III - 1.26\redist\miles\Mp3dec.asi
0x60000000 - 0x6005D000 C:\Program Files (x86)\WarCraft III - 1.26\ijl15.dll
0x63EB0000 - 0x647DB000 C:\WINDOWS\System32\DriverStore\FileRepository\c0318486.inf_amd64_11ba0b4b7cc81d52\atiumdag.dll
0x647E0000 - 0x6487B000 C:\WINDOWS\WinSxS\x86_microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.9348_none_d08c1480442bf1e1\MSVCR80.dll
0x64AC0000 - 0x64B4E000 C:\WINDOWS\WinSxS\x86_microsoft.windows.common-controls_6595b64144ccf1df_5.82.16299.64_none_2c284a8117b59840\COMCTL32.dll
0x669D0000 - 0x66B4B000 C:\WINDOWS\System32\DriverStore\FileRepository\c0318486.inf_amd64_11ba0b4b7cc81d52\aticfx32.dll
0x66FB0000 - 0x66FD6000 C:\WINDOWS\SYSTEM32\cryptnet.dll
0x66FF0000 - 0x66FF6000 C:\WINDOWS\SYSTEM32\detoured.dll
0x67000000 - 0x67020000 C:\WINDOWS\SYSTEM32\amdihk32.dll
0x679C0000 - 0x679E7000 C:\WINDOWS\System32\DriverStore\FileRepository\c0318486.inf_amd64_11ba0b4b7cc81d52\atiu9pag.dll
0x67A80000 - 0x67A88000 C:\WINDOWS\SYSTEM32\AVRT.dll
0x67A90000 - 0x67AEB000 C:\WINDOWS\System32\MMDevApi.dll
0x67AF0000 - 0x67BE4000 C:\WINDOWS\SYSTEM32\AUDIOSES.DLL
0x67BF0000 - 0x67C12000 C:\WINDOWS\System32\DEVOBJ.dll
0x6C190000 - 0x6C1AE000 C:\WINDOWS\SYSTEM32\gpapi.dll
0x6C1B0000 - 0x6C1DF000 C:\WINDOWS\system32\rsaenh.dll
0x6C280000 - 0x6C30C000 C:\WINDOWS\SYSTEM32\CoreMessaging.dll
0x6C310000 - 0x6C544000 C:\WINDOWS\SYSTEM32\CoreUIComponents.dll
0x6C550000 - 0x6C5C7000 C:\WINDOWS\SYSTEM32\TextInputFramework.dll
0x6C5D0000 - 0x6C69E000 C:\Windows\System32\Windows.UI.dll
0x6E0D0000 - 0x6E19B000 C:\WINDOWS\SYSTEM32\wintypes.dll
0x6F000000 - 0x6FBB5000 C:\Program Files (x86)\WarCraft III - 1.26\Game.dll
0x70BB0000 - 0x70C66000 C:\WINDOWS\SYSTEM32\d3d8.dll
0x70DF0000 - 0x70DF8000 C:\WINDOWS\SYSTEM32\WINNSI.DLL
0x712B0000 - 0x7138F000 C:\WINDOWS\SYSTEM32\OPENGL32.dll
0x71C40000 - 0x71C65000 C:\WINDOWS\SYSTEM32\GLU32.dll
0x71C70000 - 0x71CF0000 C:\WINDOWS\SYSTEM32\DSOUND.DLL
0x72000000 - 0x72007000 C:\WINDOWS\SYSTEM32\d3d8thk.dll
0x726B0000 - 0x726D3000 C:\WINDOWS\system32\dwmapi.dll
0x72710000 - 0x72789000 C:\WINDOWS\system32\uxtheme.dll
0x72790000 - 0x72A54000 C:\WINDOWS\SYSTEM32\WININET.dll
0x72BE0000 - 0x72C35000 C:\WINDOWS\SYSTEM32\mswsock.dll
0x73980000 - 0x73AFA000 C:\WINDOWS\System32\PROPSYS.dll
0x73C50000 - 0x73C63000 C:\WINDOWS\SYSTEM32\CRYPTSP.dll
0x73CE0000 - 0x73D08000 C:\WINDOWS\SYSTEM32\ntmarta.dll
0x73D10000 - 0x73D34000 C:\WINDOWS\SYSTEM32\dbgcore.DLL
0x73D40000 - 0x73EC1000 C:\WINDOWS\SYSTEM32\dbghelp.dll
0x73F30000 - 0x73F49000 C:\WINDOWS\SYSTEM32\bcrypt.dll
0x73F50000 - 0x73F80000 C:\WINDOWS\SYSTEM32\IPHLPAPI.DLL
0x74240000 - 0x74263000 C:\WINDOWS\SYSTEM32\WINMMBASE.dll
0x742D0000 - 0x742F4000 C:\WINDOWS\SYSTEM32\WINMM.dll
0x74370000 - 0x74378000 C:\WINDOWS\SYSTEM32\WSOCK32.dll
0x743A0000 - 0x743A8000 C:\WINDOWS\SYSTEM32\VERSION.dll
0x743B0000 - 0x743BA000 C:\WINDOWS\System32\CRYPTBASE.dll
0x743C0000 - 0x743E0000 C:\WINDOWS\System32\SspiCli.dll
0x743E0000 - 0x74423000 C:\WINDOWS\System32\sechost.dll
0x74430000 - 0x74500000 C:\WINDOWS\System32\KERNEL32.DLL
0x74500000 - 0x74522000 C:\WINDOWS\System32\GDI32.dll
0x74530000 - 0x74575000 C:\WINDOWS\System32\SHLWAPI.dll
0x74580000 - 0x74587000 C:\WINDOWS\System32\NSI.dll
0x74590000 - 0x74767000 C:\WINDOWS\System32\KERNELBASE.dll
0x747D0000 - 0x748E7000 C:\WINDOWS\System32\ucrtbase.dll
0x748F0000 - 0x7496C000 C:\WINDOWS\System32\msvcp_win.dll
0x74970000 - 0x74AB4000 C:\WINDOWS\System32\MSCTF.dll
0x74AC0000 - 0x74ACE000 C:\WINDOWS\System32\kernel.appcore.dll
0x74AE0000 - 0x74B46000 C:\WINDOWS\System32\WS2_32.dll
0x74B50000 - 0x74CD2000 C:\WINDOWS\System32\CRYPT32.dll
0x74CE0000 - 0x74CEE000 C:\WINDOWS\System32\MSASN1.dll
0x74CF0000 - 0x74DAD000 C:\WINDOWS\System32\msvcrt.dll
0x74DB0000 - 0x74DF6000 C:\WINDOWS\System32\WINTRUST.dll
0x74E00000 - 0x74F5F000 C:\WINDOWS\System32\gdi32full.dll
0x74FC0000 - 0x762F3000 C:\WINDOWS\System32\SHELL32.dll
0x76360000 - 0x76457000 C:\WINDOWS\System32\ole32.dll
0x76460000 - 0x764B7000 C:\WINDOWS\System32\bcryptPrimitives.dll
0x764C0000 - 0x76538000 C:\WINDOWS\System32\ADVAPI32.dll
0x76540000 - 0x765C8000 C:\WINDOWS\System32\shcore.dll
0x765D0000 - 0x76816000 C:\WINDOWS\System32\combase.dll
0x76820000 - 0x768F4000 C:\WINDOWS\System32\comdlg32.dll
0x76900000 - 0x769BE000 C:\WINDOWS\System32\RPCRT4.dll
0x76F60000 - 0x76F74000 C:\WINDOWS\System32\profapi.dll
0x76FB0000 - 0x76FE8000 C:\WINDOWS\System32\cfgmgr32.dll
0x76FF0000 - 0x775B6000 C:\WINDOWS\System32\windows.storage.dll
0x775C0000 - 0x775D6000 C:\WINDOWS\System32\win32u.dll
0x775E0000 - 0x77755000 C:\WINDOWS\System32\USER32.dll
0x777F0000 - 0x77872000 C:\WINDOWS\System32\clbcatq.dll
0x77880000 - 0x778C5000 C:\WINDOWS\System32\powrprof.dll
0x778D0000 - 0x778F5000 C:\WINDOWS\System32\IMM32.dll
0x77900000 - 0x77993000 C:\WINDOWS\System32\OLEAUT32.dll
0x779A0000 - 0x77B2D000 C:\WINDOWS\SYSTEM32\ntdll.dll
дальше уже - Memory Dump
Так... Щас обнаружил что это у меня такая херня со всеми картами которые я сохранял в невгене... ВСЕ запутанее и странееее...
Проблема решилась переустановкой редактора повторным сохранением карты. Дело было в конфликте программы мусорщика ВСЕМ СПС.

23

» WarCraft 3 / Подсчет игроков

Похожие вопросы:

ответ
вот и получаем общий статы вссех героев
count_hero_created - Количество героев созданых на карте оно будет расти как будет создавать
heroes - массив героев
и можете спокойно получать из данных all_stats в любом месте куда хочеш

23

» WarCraft 3 / Редактор карты

Похожие вопросы:

ответ
Делать свой ИИ, либо в редакторе ИИ, либо писать самому.
Ещё можешь дописать своих юнитов в стандартные скрипты.
ответ
Хух, понеслось:
  1. Открыл карту, нажми сохранить (путь к карте не должен содержать русских букв) и сразу зайди в раздел "Extensions" - "Edit tileset".
  2. Выбрал нужные тайлсеты, нажми ок, карта сохранится (или сохрани сам) и тогда выходи из карты.
  3. Заходи в карту.
ответ
Открывается модель в программе "War3ModelEditor". Там нажимаешь Windows - Texture Manager. Жмёшь на пустое правой кнопкой мыши и импортируешь свою. Затем переходишь в Material Manager, там выбираешь каждый материал, ищешь там раскрывающийся список с текстурами, и выбираешь свою вместо той которая была там. Когда закроешь Материалы, увидишь свою модель с новой текстурой. Затем всё сохраняешь.
Открываешь редактор World Editor. Нажимаешь в Модулях - Менеджер импорта. Там импортируешь свою модель, и текстуру. Какой путь был в "War3ModelEditor" - Texture Manager, такой же путь должен писаться и здесь. Но убери "war3mapImported\" и перезагружай редактор после импортирования туда каждого файла! Написал на память. Вопросы?
ответ
Ну качаешь остюда JNGP, тут поправлено туча багов, спс Ханашиби.
Ставим по инструкции, запускаем ро, потом отрубаем USWE опции вроде там кастом тайслетов да кастом гуи триггеров, оно нафиг ненадо и нередко ломает совместимость с другими редакторами карт wc3.
Сжасс там есть, все должно изи работать.
Если нужен мемхак, скину код из своей карты с инструкциями что к чему.
Еще вопросы?

23

» WarCraft 3 / Локальный игрок

Похожие вопросы:

ответ
Создавать нельзя, на сколько я помню, а вот скрывать и отображать, а также менять текст и иконку - сколько угодно.
ответ
Во-первых, "хочется взять и в***ать учебником русского языка" ©
Во-вторых, перевожу на человеческий написанное топик стартером. Ему нужны локальные магазины, для каждого героя. Делает он что-то типа хироарены, и хочет что бы магазин со способностями мага был недоступен для воина. С другими героя соответственно.
В-третьх, это делается действительно через GetLocalPlayer(), другое дело что топик стартер не умеет этим пользоваться.
ответ
Решил проблему следующим путем: при несовпадении данных в Memory, заставляем читера выделить специального скрытого в тумане войны юнита, а в другом триггере по событии выделения пишем, что GetTriggerPlayer() - МХшник, и только потом кикаем его.
quq_CCCP:
Для бана нужна работа с хост ботом
Ты неправильно понял. Если люди по Гарене играют, то они должны знать, что игрок отключается по неуважительной причине, чтобы сразу его забанить и потом не париться с ним. Бан-то локальный в Гарене, не то что на хост-боте.
ответ
Можно сделать локально прозрачность, а если и управлять не нужно, то добавить москитов и будет не видимый юнит для других игроков

23

» WarCraft 3 / Jass Сложный скилл

Похожие вопросы:

ответ
Hanuman, для начала выучить джасс и прочитать статьи xgm.guru/p/wc3/articles
так же научится редактировать данные юнитов через hex редактор
потом делать как сказал ScopteRectuS

23

» WarCraft 3 / Function main

Похожие вопросы:

ответ
Итак. Комментарии на кириллице убраны, и всё заработало. Но потом я всё же переименовал файл скрипта)
ответ
Проблема возникает также при переносе вот этого вот в инициализацию триггера тест.
Но при этом если вместо строки вроде "12345" использовать, например, GetAbilityName('Aloc') - то все работает.
Это какой-то баг со строками?
Еще у меня почему-то происходит фантомный клик по центру карты в начале игры
Вобщем не стоит юзать имена функций напрямую в экзекуте и вообще таймеры лучше
ответ
Нашел ошибку:
В функции SuicideUnits (в самом низу) должно находиться строго 10 значений. У меня 9. Если приписать еще 0, то все работает.

23

» WarCraft 3 / War3ME ошибка

Похожие вопросы:

ответ
Гммм... В первый раз о подобном слышу. Как "лечить" я не знаю, но как вариант можно скачать нужную версию игры и взять нужный архив вместо повреждённого оттуда. Примерно таким образом я избавился от проблем со своей версией, связанных с отсутствием музыки и стандартных реплик, а также отказом воспринимать большУю часть импортированных звуков.
ответ
~8gabriel8:
PrincePhoenix, там геосеты есть, но материалов мало. Я пробовал сделать дополнительный материал для геосетов, чтобы тот в нужных анимациях исчезал, но там в материале текстура доспехов и тимколора. Почему-то в нужной анимации пропадает текстура доспехов, но щит мигает тимколором. Мне разбираться сейчас некогда, срочно возникли дела, может быть он скинет сюда модель, чтобы посмотрели.
P. S. А в игре всё нормально, только в w3me мигало почему-то)

23

» WarCraft 3 / Компания и герой...

Принятый ответ
Похожие вопросы:

ответ
Артас Менетил:
Ну нет. Не всегда удобно ковыряться в чужих картах. Объясню на пальцах.
Есть категория действий "Буфер игры". Вот что в ней есть:
  1. Create game cache - создать кэш с указанным именем. Если в двух разных картах создать кэши с одними и теми же именами, то кэш будет общим - можно переносить информацию с одной карты на другую.
  2. Save unit/integer/real/boolean/string - сохраняет переменную (если юнит, то все его параметры) в кэш.
  3. Save cache. После записи чего-ибо в кэш его следует сохранить
  4. Load unit - загружает юнита из кэша и создаёт его на карте.
Чтобы загрузить из кэша переменную, это следует делать при помощи функций этого типа.
ответ
SomeFire, У него 3 круга
вернее 6
ответ
Буфер игры - создать буфер с именем ...
Буфер игры - сохранить юнит как ...
Буфер игры - сохранить последний созданный буфер

Буфер игры - создать буфер с именем ...
Буфер игры - восстановить юнит из ... буфера

23

» WarCraft 3 / Плохо работает способность

Похожие вопросы:

ответ
Думал использовать чисто для экономии времени. По хорошему конечно надо самому написать системки, да все руки не доходят.
Может тогда подскажите, есть ли готовые более менее пригодные для использования. Сам всегда делал через торнадо, разве это уже не модно?
ответ
bifurcated, вот сделал наработку что то в роде того что ты хочеш только желательно доработать... но с этим сам почитай статьи
ах забыл рекомендую делать подобные скилы на основе "Канал"

23

» WarCraft 3 / Триггерная голда

Похожие вопросы:

ответ
Yulia, создаёшь юнита без модели и наносишь ему урон от нужного игрока. Соответственно кол-во золота меняешь в параметрах юнита.
ответ
создай проект, распиши что есть, что нужно сделать, пару скринов, свободные вакансии

23

» WarCraft 3 / Меню кампаний...

Похожие вопросы:

ответ
Меняешь расширение с .w3n на .mpq (хоть простым переименованием) и открываешь архив любым MPQ-едитором (лично я пользовался этим xgm.guru/p/wc3/ladiks-mpq). После экспортируешь оттуда нужную тебе карту.
ответ
Варкрафтитель:
Absolute, Я знаю... Но он же... Уже изменен...
Вот что я тебе скажу. Иногда проще начать с нуля, чем разгребать ошибки. Просто создай новую кампанию , перекопируй старые триггеры. Всяко быстрее выйдет, чем несколько дней разбираться, да и качественнее.
ответ
~8gabriel8:
Это зависит от камер и анимаций. Сначала воспроизводится анимация Birth, которая и представляет приближение, потом Stand, там везде свои камеры. Посмотри в war3me у модели экрана, как там сделано. Подробную статью о работе с камерами в этих моделях не встречал.
Вариант ApEJI про вращение модели вместо кучи камер тоже норм. Типа в Birth вращение сделать. Но у меня, например, не такие высокие навыки в анимировании, чтобы сразу много объектов правильно сдвигать, мне предпочтительнее камер наделать.

23

» WarCraft 3 / Герой

Похожие вопросы:

ответ
так в триггере всё верно же
переносимый предмет типа отсутствует, т.е равен 0
и проданный предмет тоже 0
0 == 0
всё верно
что написал то и получил
ответ
8gabriel8, есть только одно но
твоя система отлавливает любой урон а не только урон с руки
и хз нафига вообще тут 3 триггера
вот статья про отлов урона на гуи
есть 2 способа определить что это урон с руки (ну и мемхак ещё)
  1. давать юниту орб вешающий баф (сферу яда например) и при получении урона проверять наличие этого баффа, если есть баф то значит урон с руки и удаляем баф
  2. использовать скилл рунных браслетов с защитой от магии равной 2
в результате весь получаемый магический урон будет отрицательным
если полученный урон (далее dmg) отрицательный то урон нанесён магией и снимаем юниту dmg*-2 хп (для того чтобы полученный урон не был отрицательным)
ответ
~8gabriel8:
К сожалению, я нашёл лишь условие "количество предметов у юнита" о типе предметов, там нет и речи
Верно, мой косяк. Надо циклом перебирать предметы. Вот карта с триггером и скрин:

23

» WarCraft 3 / Области и триггеры... ещё юниты...

Похожие вопросы:

ответ
Хозяин Миров, боже
делаем дами ауру
потом всем у кого есть баф ауры даём бонусы скрытым спелбуком
когда баф исчезает убираем бонусы
ответ
Maniac_91, область это хэндл а значит утекает
максимального количества областей ограничивается количеством оперативной памяти (до 2 гигов вроде) и максимальным количеством хэндлов (2 в 32 степени)
больше ни чем
EnergyFrost:
Максимум что тебя ожидает- лаги, которые ты получишь из-за утечек, работая с этими областями. Так что старайся не наплодить утечек и все будет окей.
как правило работа со статичными областями не вызывает утечек (если их не копировать)
ограничений на декорации тоже нету к слову (если не юзать устаревший редактор)
ответ
Утечка - это когда не удаляются ненужные объекты. Здесь регион нельзя удалять, потому что без него событие не будет работать. Но если у вас много таких событий, то лучше использовать один регион для всех событий, при условии, что размеры региона не будут изменяться в процессе игры, потому что это может нарушить работу других событий, привязанных к данному региону.
А функция TriggerRegisterEnterRectSimple в теории не утечна, но на практике может утекать, например, если в потоке триггера будет вызвано её уничтожение RemoveRegion(GetTriggeringRegion()).

23

» WarCraft 3 / Что то пошло не так

Похожие вопросы:

ответ
А приказ остановиться не пробовали?
ответ
во первых
код после ретурна не выполняется и 2 ретурна писать нельзя
во вторых
ты статьи вообще читал?
в самых начальных статьях по джасс сказано что так писать нельзя
это сказано в самых начальных статьях про локальные переменные
в третьих это не стол заказов
ответ
короче, вот рабочий вариант
смотреть сюда
function Trig_HeroArcheressSkillAFirst_Conditions takes nothing returns boolean
    return GetSpellAbilityId() == 'ASkA'
endfunction

function HeroArcheressSkillAFirst_SelectGroup takes nothing returns nothing
    if GetUnitAbilityLevel(GetEnumUnit(), 'B006') > 0 then
        call PauseUnit(GetEnumUnit(), true)
        call GroupAddUnit(HeroArcheressSkillAGroup, GetEnumUnit())
        call BJDebugMsg("Стан")
    endif
endfunction

function Trig_HeroArcheressSkillAFirst_Actions takes nothing returns nothing
    local group g = CreateGroup()
    
    set HeroArcheressSkillADammi = CreateUnit(GetOwningPlayer(GetTriggerUnit()), 'h003', GetSpellTargetX(), GetSpellTargetY(), bj_UNIT_FACING) //создаем дамми
    call UnitApplyTimedLife(HeroArcheressSkillADammi, 'BTLF', GetUnitAbilityLevel(GetTriggerUnit(), 'ASkA')) //таймер жизни для дамми
    
    call TriggerSleepAction (1.) //из-за ауры увеличил задержку
    //убрал утечки
    call GroupEnumUnitsInRange(g, GetSpellTargetX(), GetSpellTargetY(), 500.00, null)
    call ForGroup(g , function HeroArcheressSkillAFirst_SelectGroup )
    call DestroyGroup(g)
    set g = null
    //
    call TimerStart (HeroArcheressSkillATimer, 1., true, null) //запускаем таймер
endfunction

//===========================================================================
function InitTrig_HeroArcheressSkillABase takes nothing returns nothing
    set gg_trg_HeroArcheressSkillABase = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_HeroArcheressSkillABase, EVENT_PLAYER_UNIT_SPELL_EFFECT )
    call TriggerAddCondition( gg_trg_HeroArcheressSkillABase, Condition( function Trig_HeroArcheressSkillAFirst_Conditions ) )
    call TriggerAddAction( gg_trg_HeroArcheressSkillABase, function Trig_HeroArcheressSkillAFirst_Actions )
endfunction
globals
    integer HeroArcheressSkillACircle = 0
    timer HeroArcheressSkillATimer = CreateTimer() //таймер
endglobals

function HeroArcheressSkillAFirst_Damage takes nothing returns nothing
    if GetWidgetLife(HeroArcheressSkillADammi) > 0 then //проверяем, жив ли дамми юнит
        call BJDebugMsg("Урон" )
        call UnitDamageTarget(udg_HeroArcheress, GetEnumUnit(), 50, true, false, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_NORMAL, WEAPON_TYPE_WHOKNOWS)
    else //иначе удаляем его из группы и снимаем паузу
        call PauseUnit(GetEnumUnit(), false)//PauseUnitBJ( false , GetEnumUnit() )
        call GroupRemoveUnit(HeroArcheressSkillAGroup, GetEnumUnit())
        call BJDebugMsg("Выход")
    endif
endfunction

function HeroArcheressSkillAFirst_Actions takes nothing returns nothing
    call ForGroup(HeroArcheressSkillAGroup, function HeroArcheressSkillAFirst_Damage)
endfunction

//===========================================================================
function InitTrig_HeroArcheressSkillAFirst takes nothing returns nothing
    set gg_trg_HeroArcheressSkillAFirst = CreateTrigger(  )
    call TriggerRegisterTimerExpireEvent(gg_trg_HeroArcheressSkillAFirst, HeroArcheressSkillATimer) //событие таймер истекает
    call TriggerAddAction( gg_trg_HeroArcheressSkillAFirst, function HeroArcheressSkillAFirst_Actions )
endfunction

23

» WarCraft 3 / Как выбросить предмет?

Похожие вопросы:

ответ
Опиши что ты хочешь сделать.
ответ
Дать предмету кастом вэлье по номеру игрока при подбирании, если не задано. И проверять при подбирании. Следующая проверка: если кастомное число предмета не равно номеру игрока, то выкидываем.
ответ
событие - герой теряет предмет
условие - предмет которым манипулируют типа (такой т предмет)
действие - виу виу, пж пж.
ответ
еще можно дать нужным юнитам абилку без иконки (например предметную +0 атаки) и проверять что она у них есть
ответ
Вот, слегка модифицировал твой вариант. Лучше, найти какую-нибудь готовую систему, ибо предметы всегда будут перемещаться, да и с полным инвентарем не корректно работает.

23

» WarCraft 3 / Инвентарь

Похожие вопросы:

ответ
Steal nerves:
ответы
Как объединить зелья лечения в одно с зарядом, если герой имеет одно в инвентаре и поднимает второе?
обычно используют "событие - юнит получает предмет", И на предмет, который вы получаете, ссылается переменная, которая называется item being manipulated. А юнит, который получает итем - Triggering Unit. Вы можете с помощью этой переменной итема узнать тип, сравнить. Потом циклом пробегаете по слотам (от 1 до 6), тут вся суть в одной команде триггерной (item in slot X, итем в слоте Х) и проверяете есть ли такой же итем (не забываем делать проверки, на то что этот предмет не равен item being manipulated и сравниваете не одинаковые ли типы). Если есть такой же (находите тот же тип что и item being manipulated), то от item being manipulated берете заряды и прибавляете к зарядам существующего, а потом item being manipulated удаляете. Недостаток: при заполненном инвентаре такая штука не будет работать.Не хватает свободного места.
код
цикл А от 1 до 6
if тип итема (item being manipulated) РАВНО тип итема (item in slot А) and item being manipulated НЕ РАВНО item in slot А then проверяете
set k = Charges remaining in ( item being manipulated) + Charges remaining in ( item in slot А) складываете заряды
Set charges remaining in ( item in slot А) to ( k) устанавливаете кол-во зарядов
Remove Item (item being manipulated) удаляете
endif
Есть гуишная проверка на наличие итема определенного типа в инвентаре, но она утечна. И лучше циклом прогонять.
Кстати выше пример, там вот дропают итем, зачем? чтобы проверить есть ли такой же итем. А то мб проверка на наличие итема определенного типа в инвентаре найти подобранный итем. А нам нужно знать, что есть еще один, кроме подобранного. Поэтому дропают. Только не понятно зачем создаете новый итем.
Проверка, на то что подобранный предмет имеет зарядов больше 0, говорит нам о том что это не обычный предмет.
есть статьи
Как зелье с зарядом разделить, если игрок перекладывает зелье с зарядом в другую ячейку инвентаря, если возможно, то разделение происходить должно только при нажатии какой-то клавиши?
можно перекладывать в другой слот. для этого ловят приказ. Короче смотрите системы CCS
там создают новый такой же предмет, и выделяют кол-во зарядов, деля поровну например. Абилкой например, попробуй сделать целевую активную абилку с целью предмет, указывай на инвентарь и дели.
Как это можно сделать покороче для множества разных типов предметов?
всмысле покороче? сделать под одну группу? есть же классификация. Я вот делаю так, что все предметы, которые с зарядами, должны иметь классификацию "с зарядами". Не помню точно как называется класс итемов.
Как правильно реализовать в инвентаре 7 слот?
если у героя заполнен инвентарь, то он может подобрать руну. Вот в доте система скрещивания. То же самое можно сделать и с зарядами. На земле у него лежат руны, при подборе руна исчезает. Но мы проверяем слоты, есть ли такой итем. Если есть, прибавляем заряды к существующему. Иначе создать новый. При дропе итема, оригинал подменяет снова на руну. В руну можно передать значения зарядов.
А также ограничения какие-то на количество зарядов нужно ставить или сама система выше какой-то планки не даст собирать?
до такого не доходил.
скинул примеры (хотя многие дурацкие, но делал здесь хгм в качестве ответов)
вот еще одна система hh
ответ
avuremybe, с буфером игры (кэш) можно работать так же как с хэш таблицей
FrigatPlay, в буфер игры можно сохранять не только юнитов но и предметы
просто перебираем циклом все предметы и сохраняем в кэш
а потом в следующей карте извлекаем их из кэша
ответ
Alexey103, а зачем менять уровень?
просто создал на основе стандартной и заметил у всех героев стандартную на созданную
у меня всё сработало
судя по всему инвентарь носильщика это просто обёртка над стандартным инвентарём
т.е. он содержит в себе стандартную способность "Предметы (Герой)"
и при проверки на уровень стандартной "Предметы (Герой)" выдаёт что она есть т.к. она содержится в носильщике
но если проверять на уровень нестандартной "Предметы (Герой)" то выдаст что её нету
я добавил карту пример
если приказать подобрать предмет герою который владеет способностью hero inventory (нестандартная способность на основе "Предметы (Герой)") то напишет hero
иначе unit
ответ
А если кратко, то перебирай при поднятии предмета все слоты инвентаря. Если уже есть такой предмет - делай что-то с лишней копией. Уничтожай, роняй с грозной надписью и так далее. Все это прекрасно и спокойно реализуется на гуи. Это если тебе именно одинаковые предметы не нравятся. С классами вещей там больше заморочек.